#ifndef _FUN_H_
#define _FUN_H_

#define RED 0xff0000
#define GROUP 0xff80ff
#define A 0x5f778f
#define GREEN 0xff00
#define BLUE 0xff
#define RED1 0xA8BE3F   //字体显示颜色 


char picture[1920*1080*4];//图片

struct input_event evt; 

//链表结构体信息 
typedef struct node{
	char name[20];
	struct node *prev;
	struct node *next;
}dnode_t,*dlist_t;

//声明音乐、图片、视频链表 
dlist_t headm ;
dlist_t headi ;
dlist_t headv ;

//汉字库相关 
#define FONTDATAMAX 4096
int fd_fb;
int fd_hzk16;
struct fb_var_screeninfo var;
struct fb_fix_screeninfo fix;
 
struct stat hzk_stat;
	
int screen_size;
unsigned char *fbmem;
unsigned char *hzkmem;
 
unsigned int line_width;
unsigned int pixel_width;


//缩小并显示图片 
void show_bmp1(const char *path,int *memp) ;

//音乐操作 
void music_image(int *memp,int fdc);

//遍历Music链表  , 音乐操作中使用 
void travelRR(dlist_t head,int *memp);

//视频操作 
void video_image(int *memp,int fdc);

//遍历Video链表  ，视频操作中使用 
void travelBB(dlist_t head,int *memp);

//显示图片 
void show_bmp(const char *path,int *memp);

//登录界面 
void login_image(int *memp,int fdc,struct input_event evt);

//图片操作 
void image_image(int *memp,int fdc);

//文件操作 
void file_image(int *memp,int fdc);

//主界面 
void main_image(int *memp,int fdc,struct input_event evt,int m);

//按位置删除，成功返回0，失败返回1
int delete_by_index(dlist_t head, int index);

//按位置查找，成功返回节点地址，失败返回NULL
dlist_t find_by_index(dlist_t head, int index);

//LCD上显示中文 
void lcd_put_chinese(int x,int y,unsigned char *str);

//LCD上显示英文以及符号 （其他修改） 
void lcd_put_ascii(int x,int y,unsigned char c);

//LCD上显示英文及符号 
void lcd_put_asciiB(int x,int y,unsigned char c);

//LCD上显示英文及符号  （其他不修改） 
void lcd_put_asciiR(int x,int y,unsigned char c);

//转换过渡 
void lcd_put_pixel(int x,int y,unsigned int color);

//用像素点画圆 
void circle(int *memp,int x,int y,int r);

//板接球游戏 
void board_ball(int *memp,int fdc,struct input_event evt);

//用像素点画板
void board(int *memp,int y);

//创建空链表 
dlist_t create_emptydlist();

//遍历Music链表  文件操作中使用 
void travelR(dlist_t head,int *memp);

//遍历Image链表  文件操作中使用 
void travelG(dlist_t head,int *memp);

//遍历Video链表  文件操作中使用 
void travelB(dlist_t head,int *memp);

//成功返回新插入节点的地址，失败返回空
dlist_t insert(dlist_t p, char *file_name);


#endif

